package com.smart.five.ioc.java.configuration.bean;

import com.smart.five.ioc.java.configuration.LoginDao;
import com.smart.five.ioc.java.configuration.UserDao;
import com.smart.five.ioc.java.configuration.UserService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//将一个POJO类定义为Bean的配置类
/*
    java类的配置方式相较于XML的配置方式，更加灵活的实现Bean的实例化及Bean之间的装配，
    XML的配置方式更为简单
 */
@Configuration
public class Appconf {
    //Bean类型由方法返回值的类型决定，名称默认和方法名相同。
    @Bean
    public UserDao userDao(){
        return new UserDao();
    }

    //可以入参显示指定bean名称
    @Bean(name="loginDao")
    public LoginDao loginDao(){
        return new LoginDao();
    }

    @Bean
    public UserService userService(){
        UserService userService = new UserService();
        userService.setLoginDao(loginDao());
        userService.setUserDao(userDao());
        return userService;
    }


}
